package com.cyt.${module?replace('/','.')}.service;

import com.cyt.base.model.dto.ReturnResult;
import com.cyt.${module?replace('/', '.')}.model.po.${entity};
import com.cyt.${module?replace('/', '.')}.model.vo.${entity}Vo;
import com.cyt.sys.model.po.SysUser;
import com.cyt.sys.service.BaseService;

import java.util.List;

/**
 * ${tableComment}Service层接口类
 *
 * @author ${author}
 * @date ${.now}
 */
public interface ${entity}Service extends BaseService<${entity}> {

    /**
     * 分页查询
     *
     * @param ${entity?uncap_first}Vo 接受参数对象
     * @param pageNum 分页数
     * @param pageSize 每页显示条数
     * @return ReturnResult
     * @author ${author}
     * @date ${.now}
     */
    ReturnResult findPage(${entity}Vo ${entity?uncap_first}Vo, int pageNum, int pageSize);

    /**
     * 分页查询
     *
     * @param ${entity?uncap_first}Vo 接受参数对象
     * @param pageNum 分页数
     * @param pageSize 每页显示条数
     * @return ReturnResult
     * @author ${author}
     * @date ${.now}
     */
    ReturnResult findVoPage(${entity}Vo ${entity?uncap_first}Vo, int pageNum, int pageSize);

    /**
     * list查询
     *
     * @param ${entity?uncap_first}Vo 接受参数对象
     * @return List<${entity}>
     * @author ${author}
     * @date ${.now}
     */
    List<${entity}> findList(${entity}Vo ${entity?uncap_first}Vo);

    /**
     * list查询
     *
     * @param ${entity?uncap_first}Vo 接受参数对象
     * @return List<${entity}Vo>
     * @author ${author}
     * @date ${.now}
     */
    List<${entity}Vo> findVoList(${entity}Vo ${entity?uncap_first}Vo);

    /**
     * 单个对象查询
     *
     * @param ${entity?uncap_first}Vo 接受参数对象
     * @return ${entity}
     * @author ${author}
     * @date ${.now}
     */
    ${entity} findOne(${entity}Vo ${entity?uncap_first}Vo);

    /**
     * 单个对象查询
     *
     * @param ${entity?uncap_first}Vo 接受参数对象
     * @return ${entity}Vo
     * @author ${author}
     * @date ${.now}
     */
    ${entity}Vo findVoOne(${entity}Vo ${entity?uncap_first}Vo);

    /**
     * 添加或更新
     *
     * @param ${entity?uncap_first}Vo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author ${author}
     * @date ${.now}
     */
    ReturnResult addOrUpdate(${entity}Vo ${entity?uncap_first}Vo, SysUser sysUser);

    /**
     * 根据条件逻辑删除
     *
     * @param ${entity?uncap_first}Vo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author ${author}
     * @date ${.now}
     */
    ReturnResult remove(${entity}Vo ${entity?uncap_first}Vo, SysUser sysUser);

    /**
     * 根据条件物理删除
     *
     * @param ${entity?uncap_first}Vo 参数接受对象
     * @param sysUser      当前用户
     * @return ReturnResult
     * @author ${author}
     * @date ${.now}
     */
    ReturnResult delete(${entity}Vo ${entity?uncap_first}Vo, SysUser sysUser);
}